package com.gxks.lhs.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gxks.lhs.entity.Goods;

import java.util.List;

/**
 * <p>
 * 商品表 服务类
 * </p>
 *
 * @author LuoHaisong
 * @since 2023-05-18dd
 */
public interface IGoodsService extends IService<Goods> {
    /**
     * 使用二手手机的id批量删除二手手机
     *
     * @param idList 删除的二手手机的id列表
     * @return 是否删除成功
     */
    boolean removeGoods(List<String> idList);

    /**
     * 根据二手手机的id批量修改二手手机的状态
     *
     * @param id     修改的二手手机的id列表
     * @param status 修改后的二手手机的状态
     * @return 是否修改成功
     */
    boolean updateGoodsStatus(String id, Integer status);

    /**
     * 根据二手手机的id删除二手手机
     *
     * @param id
     * @return 删除是否成功
     */
    boolean removeGoodsById(String id);

    /**
     * 修改二手手机的信息
     *
     * @param goods
     * @return 修改是否成功
     */
    boolean updateGoods(Goods goods);

    /**
     * 修改二手手机的信息
     *
     * @param goods
     * @return 修改是否成功
     */
    boolean updateGoodsforUser(Goods goods);

    /**
     * 查询所有的二手手机
     *
     * @return 所有二手手机的列表
     */
    Page<Goods> findAllGoods(Integer current, Integer size);

    /**
     * 根据条件查询二手手机的信息
     *
     * @param goods 查询条件封装的实体类
     * @return 返回查询到的二手手机的列表
     */
    Page<Goods> findGoods(Goods goods, Integer current, Integer size);

    /**
     * 根据id查找手机的详细信息
     *
     * @param id
     * @return
     */
    Goods findGoodsById(String id);

    /**
     * 新增二手手机
     *
     * @param goods
     * @return
     */
    boolean addGoods(Goods goods);

    /**
     * 根据发布人的id查询二手手机列表
     */
    Page<Goods> findGoodsByUserId(String userId, Integer current, Integer size);

    /**
     * 用户下架自己发布的二手手机
     */
    boolean soldOut(String userId, String GoodsId);

    /**
     * 用户上架自己发布的二手手机
     */
    boolean soldIn(String userId, String GoodsId);

    /**
     * 用户删除自己发布的二手手机
     */
    boolean removeGoods(String userId, String GoodsId);


    /**
     * 随机推荐二手手机
     *
     * @return
     */
    List<Goods> randomFindGoodsList();

    Page<Goods> findGoodsList(Integer categoryId, Integer current, Integer size);

    /**
     * 根据商品id查询卖家id
     */
    String findUserIdByGoodsId(String goodsId);

    /**
     * @param title   搜索内容
     * @param sort    排序 0 默认最新发布 1价格排序升序 2 价格降序 3 最近更新
     * @param current
     * @param size
     * @return
     */
    Page<Goods> userSearch(String title, String sort, Integer current, Integer size);

    /**
     * 根据卖家id更改二手手机的状态，用于封禁用户后下架用户的二手手机
     *
     * @param userId
     * @param status
     * @return
     */
    boolean updateGoodsStatusByUserId(String userId, Integer status);


}
